//工厂模式主要是为了创建对象实例或者类簇，关心的是最终产品产出，不关心你创建的整个过程
//每个实例的各个属性都可以抽离成为一个类，而这每一个类有自己的构造方式，小类的组合将大类实现，各司其职，建造者模式
var Student = function (description,age) {
    this.description=description||'保密'
    this.age = age||'保密'
}
Student.prototype={
    getAge:function () {
        return this.age
    },
    getDescripton:function () {
        return this.description
    }
}
//姓名为一个建造函数一部分，凸显组件建造化
var Named=function (name) {
    var that = this;
    (function (name,that) {
        that.wholename = name
        if(name.indexOf(' ')> -1){
            that.firstname=name.slice(0,name.indexOf(' '))
            that.lastname = name.slice(name.lastIndexOf(' '))
        }
    })(name,that)
}
//创建一个学生的建造者
var JluStudent = function (age,name) {
    var _preson = new Student('',age)
    _preson.name = new Named(name)
    return _preson
}
var hxb = new  JluStudent('18','郝栩彬')
// console.log(hxb.getAge())
//原型模式，对于简单而又差异化的属性放在构造函数中，将消耗资源比较大的方法放在基类原型中，可直接用原型方法